iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
Mobile Development

Android studio 30天初學筆記系列 第 22

[Android Studio 30天挑戰] Day22 - 介紹SharedPreferences

  • 分享至 

  • xImage
  •  

今天介紹的是SharedPreferences,這個類別提供一個通用的框架,讓你可以儲存key-value格式的永久性資料到Android裝置上,像是一個簡易版的資料庫。

語法

  • getSharedPreferences() :如果你打算分開存放多個檔案資料的話,這個方法可以讓你指定要存放的檔案名稱。
  • getPreferences() :這個方式只能存放於你建立在的Activity之下。

模式

看到剛剛的語法最後面有一個MODE_PRIVATE,這個有著四種不同的模式,如下:

  • MODE_PRIVATE :只允許該APP存取
  • MODE_WORLD_READABLE :所有APP都能讀取
  • MODE_WORLD_WRITEABLE :所有APP都能存取、寫入
  • MODE_MULTI_PROCESS :允許多個process 同時存取

範例

這邊我設了一個EditText,當按下放入名子的按鈕時就會存入SharedPreference裡,按下拿取名子的按鈕時時,就會從SharedPreference裡拿取之前存入的名子。

MainActivity

public class MainActivity extends AppCompatActivity {
    private EditText name;
    private Button getName;
    private Button setName;
    private Shpf shpf;
    private Context context=this;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        name=(EditText) findViewById(R.id.editTextTextPersonName);
        getName=(Button) findViewById(R.id.button);
        setName=(Button) findViewById(R.id.button3);

        shpf=new Shpf(this);

    }
    public void getNameOnClick(View view){
        name.setText(shpf.getName());
        Toast.makeText(context,"已拿取姓名",Toast.LENGTH_LONG).show();
    }
    public void setNameOnClick(View view){
        shpf.setName(String.valueOf(name.getText()));
        name.setText("");
        Toast.makeText(context,"已存取姓名",Toast.LENGTH_LONG).show();
    }

SharedPreferences

public class Shpf {
    //設定變數
    private static String Name="Name";
    private SharedPreferences shpf;
    private Context context;

    public  Shpf(Context context){
        this.context=context;
        //設定SharedPreferences的模式。設定為只有自己(app_name)才可以讀寫。
        shpf=this.context.getSharedPreferences(getResources().getString(R.string.app_name)), 
        Context.MODE_PRIVATE);
    }
    //放入名子的方法,前面的"Name"為Key。
    public void setName(String name){
        shpf.edit().putString(Name,name).apply();
    }
    //拿取名子的方法,前面的"Name"為Key。
    public String getName(){
        return shpf.getString(Name,"");
    }
}

存取

https://ithelp.ithome.com.tw/upload/images/20220728/201503699LrpxgjNVM.png

拿取

https://ithelp.ithome.com.tw/upload/images/20220728/201503690Ikl0eSwnN.png


上一篇
[Android Studio 30天挑戰] Day21 - 介紹Glide
下一篇
[Android Studio 30天挑戰] Day23 - 介紹ButterKnife
系列文
Android studio 30天初學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言